using Senparc.Weixin.Helpers;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Xml.Linq;
namespace Senparc.Weixin.Open.Helpers
{
	public static class EntityHelper
	{
		//public static void FillEntityWithXml<T>(this T entity, XDocument doc) where T : class, new()
		//{
		//	T arg_10_0;
		//	if ((arg_10_0 = entity) == null)
		//	{
		//		arg_10_0 = Activator.CreateInstance<T>();
		//	}
		//	entity = arg_10_0;
		//	XElement root = doc.Root;
		//	PropertyInfo[] properties = entity.GetType().GetProperties();
		//	PropertyInfo[] array = properties;
		//	for (int i = 0; i < array.Length; i++)
		//	{
		//		PropertyInfo propertyInfo = array[i];
		//		string name = propertyInfo.Name;
		//		if (root.Element(name) != null)
		//		{
		//			string name2 = propertyInfo.PropertyType.Name;
		//			if (name2 == null)
		//			{
		//				goto IL_20C;
		//			}
		//			if (<PrivateImplementationDetails>{29DCC82C-8A06-41E6-92DD-982918EDCA40}.$$method0x600007f-1 == null)
		//			{
		//				<PrivateImplementationDetails>{29DCC82C-8A06-41E6-92DD-982918EDCA40}.$$method0x600007f-1 = new Dictionary<string, int>(6)
		//				{

		//					{
		//						"DateTime",
		//						0
		//					},

		//					{
		//						"Boolean",
		//						1
		//					},

		//					{
		//						"Int32",
		//						2
		//					},

		//					{
		//						"Int64",
		//						3
		//					},

		//					{
		//						"Double",
		//						4
		//					},

		//					{
		//						"RequestInfoType",
		//						5
		//					}
		//				};
		//			}
		//			int num;
		//			if (!<PrivateImplementationDetails>{29DCC82C-8A06-41E6-92DD-982918EDCA40}.$$method0x600007f-1.TryGetValue(name2, out num))
		//			{
		//				goto IL_20C;
		//			}
		//			switch (num)
		//			{
		//			case 0:
		//				propertyInfo.SetValue(entity, DateTimeHelper.GetDateTimeFromXml(root.Element(name).Value), null);
		//				break;
		//			case 1:
		//				if (!(name == "FuncFlag"))
		//				{
		//					goto IL_20C;
		//				}
		//				propertyInfo.SetValue(entity, root.Element(name).Value == "1", null);
		//				break;
		//			case 2:
		//				propertyInfo.SetValue(entity, int.Parse(root.Element(name).Value), null);
		//				break;
		//			case 3:
		//				propertyInfo.SetValue(entity, long.Parse(root.Element(name).Value), null);
		//				break;
		//			case 4:
		//				propertyInfo.SetValue(entity, double.Parse(root.Element(name).Value), null);
		//				break;
		//			case 5:
		//				break;
		//			default:
		//				goto IL_20C;
		//			}
		//			goto IL_22E;
		//			IL_20C:
		//			propertyInfo.SetValue(entity, root.Element(name).Value, null);
		//		}
		//		IL_22E:;
		//	}
		//}
	}
}
